#include "exti_handler.h"
#include "beep.hpp"
#include "TIMER.hpp"
char led_status[4] = {0};
extern "C"
{
    void EXTI2_IRQHandler(void)
    {
        if (EXTI_GetFlagStatus(EXTI_Line2) == SET)
        {
            /*
                写你的中断处理
            */
            EXTI_wakeup();

            //需要手动清除中断标志位
            EXTI_ClearITPendingBit(EXTI_Line2);
        }
    }
    void EXTI9_5_IRQHandler(void)
    {
        if (EXTI_GetFlagStatus(EXTI_Line6) == SET)
        {
            /*
                写你的中断处理
            */
            led_status[1] = !led_status[1];
            GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)led_status[1]);
            //需要手动清除中断标志位
            EXTI_ClearITPendingBit(EXTI_Line6);
        }
        if (EXTI_GetFlagStatus(EXTI_Line7) == SET)
        {
            /*
                写你的中断处理
            */
            led_status[2] = !led_status[2];
            GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)led_status[2]);
            //需要手动清除中断标志位
            EXTI_ClearITPendingBit(EXTI_Line7);
        }
    }
    void EXTI15_10_IRQHandler(void)
    {
        if (EXTI_GetFlagStatus(EXTI_Line13) == SET)
        {
            /*
                写你的中断处理
            */
            led_status[3] = !led_status[3];
            GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)led_status[3]);
            //需要手动清除中断标志位
            EXTI_ClearITPendingBit(EXTI_Line13);
        }
    }

    void TIM2_IRQHandler(void)
    {
        if (TIM_GetITStatus(TIM2, TIM_IT_Update))
        {
            //填写中断中要完成的任务
            timer_interrupt_callback();
        }
        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
    }
}